#encode编码
a='hello'
"""
b=b'hello'
print(b)#输出b'hello'
print(type(b))#输出<class 'bytes'>，即字节流或字节码
a1=a.encode()#encode编码，把字符串转化为二进制数据流
print(a1)#输出b'hello'
#decode解码
a2=a1.decode()
print(a2)#输出hello，即还原成字符串
"""
"""字符串索引：
1）顺序：和C的str类型效果相同，用【】，从0开始
2）逆序：-1开始，从最后往前
"""
test='abcdefg'
print(f'{test[0]},{test[1]},{test[2]},{test[-1]}')#输出a,b,c,g
#切片语法：【起始:结束:步长】，左闭右开，步长默认为1
print(test[1:6:2])#输出bdf
print(test[:])#输出abcdefg，全部不填默认所有
print(test[-1:0:-1])#输出gfedcb，实现了倒序输出
#切片超出范围不报错
#左到右步长应为正，右到左步长应为负
"""字符串常见操作：
1）find:原字符串.find(str,开始下标，结束下标），返回第一次找到时的下标，如果没有查找到返回-1
2）index:用法与find几乎完全相同，但是没有查找到会报错
3)count：查找字符串出现几次
4）replace:旧字符串.replace(旧子串，新子串，替换次数)替换次数不写默认所有
5）split:旧字符串.split(切分字符，切的次数)
6）capitalize:首字符大写
7）lower:全部转为小写字符
8）upper:全部转为大写字符
9）startswith:判断是否以某字符开头
10）endswith:判断是否以某字符结尾
11）islower:检测是否全部由小写字符组成
12）isupper：检测是否全部由大写字符组成
13)isdigit:检测是否全部由数字组成
14)字符串拼接：使用+或者join
15）lstrip:删除左侧空白
16）rstrip:删除右侧空白
17）strip:删除两侧空白
……
"""
print(test.find('ab'))#输出0,即第一次查找到的下标的值
print(a.count('l'))#输出2，因为l出现了2次
print(a.count('l',3,-1))#输出1，因为从下标3到下标-1中l只出现了1次
print(a.replace('l','a'))#输出heaao
print(a.replace('l','a',1))#输出healo，只替换了第一个字符
#a0='he,llo,wor,ld'
#print(a0.split(','))#输出['he', 'llo', 'wor', 'ld']
print(a.capitalize())#输出Hello
a=a.capitalize()
print(a.upper())#输出HELLO
print(a.islower())#输出False

#统计字符串中有多少数字
j=0
test2='hello123'
for i in test2:
    if i.isdigit():
        j+=1
print(j)#输出3
print('*'.join(a))#输出H*e*l*l*o
